home *** CD-ROM | disk | FTP | other *** search
/ Die Speccy' 97 / Die Speccy' 97.iso / amiga_system / the_aminet / comm / bbs / wwbbs31_source.lha / WWBBS / Library / commands.c < prev    next >
C/C++ Source or Header  |  1995-03-31  |  4KB  |  162 lines

  1. #include "wwbbs.h"
  2.  
  3. __asm
  4. ULONG NodeCommand(register __a0 BYTE *id,register __d0 UBYTE cmd,register __a1 struct TagItem *tags)
  5.     {
  6.         ULONG ret=NULL;
  7.         BYTE *dest=NULL;
  8.         if(GetStatusTags(STTAG_Name,id,STTAG_Exists,TRUE,TAG_END))
  9.             {
  10.                 BOOL local=FALSE;
  11.                 GetStatusTags(STTAG_Name,id,STTAG_Local,&local,TAG_END);
  12.                 dest=(local) ? "WWBBS Console Command" : "WWBBS Serial Command";
  13.             }
  14.         else
  15.             dest="WWBBS Node";
  16.         switch(cmd)
  17.             {
  18.                 case NDCMD_Quit:
  19.                 case NDCMD_Panic:
  20.                     ret=DoCommandMessage(dest,id,cmd,tags);
  21.                     break;
  22.                 case NDCMD_Page:
  23.                     {
  24.                         BYTE *fromnode=NULL,*text=NULL;
  25.                         BYTE username[33];
  26.                         strcpy(username,"");
  27.                         if(tags)
  28.                             {
  29.                                 struct TagItem *tag;
  30.                                 if(tag=FindTagItem(NDPAGETAG_FromNode,tags))
  31.                                     fromnode=(BYTE *) tag->ti_Data;
  32.                                 if(tag=FindTagItem(NDPAGETAG_Text,tags))
  33.                                     text=(BYTE *) tag->ti_Data;
  34.                             }
  35.                         GetStatusTags(STTAG_Name,fromnode,STTAG_UserName,username,TAG_END);
  36.                         {
  37.                             BYTE filename[64];
  38.                             BPTR fh;
  39.                             sprintf(filename,"T:wwbbs_page.%s",id);
  40.                             if(fh=Open(filename,MODE_READWRITE))
  41.                                 {
  42.                                     BYTE s[128];
  43.                                     Seek(fh,0,OFFSET_END);
  44.                                     FPutC(fh,'\n');
  45.                                     sprintf(s,"Page from %s on node %s\n",username,fromnode);
  46.                                     FPuts(fh,s);
  47.                                     sprintf(s," %s\n",text);
  48.                                     FPuts(fh,s);
  49.                                     Close(fh);
  50.                                     SetStatusTags(STTAG_Name,id,STTAG_PageReceived,TRUE,TAG_END);
  51.                                     ret=SendCommandMessage(dest,id,cmd,NULL,0,NULL,0,TRUE);
  52.                                 }
  53.                         }
  54.                     }
  55.                     break;
  56.             }
  57.         return(ret);
  58.     }
  59.  
  60. ULONG NodeCommandTags(BYTE *id,UBYTE cmd,Tag tag,...)
  61.     {
  62.         return(NodeCommand(id,cmd,(struct TagItem *) &tag));
  63.     }
  64.  
  65. __asm
  66. ULONG ConsoleCommand(register __a0 BYTE *id,register __d0 UBYTE cmd,register __a1 struct TagItem *tags)
  67.     {
  68.         ULONG ret=NULL;
  69.         switch(cmd)
  70.             {
  71.                 case CONCMD_Quit:
  72.                 case CONCMD_Open:
  73.                 case CONCMD_Close:
  74.                 case CONCMD_Read:
  75.                 case CONCMD_Write:
  76.                 case CONCMD_Abort:
  77.                 case CONCMD_Query:
  78.                     ret=DoCommandMessage("WWBBS Console",id,cmd,tags);
  79.                     break;
  80.                 case CONCMD_Wait:
  81.                     {
  82.                         ULONG waitmask=NULL,*waitmaskret=NULL;
  83.                         if(tags)
  84.                             {
  85.                                 struct TagItem *tag;
  86.                                 if(tag=FindTagItem(CONWAITTAG_WaitMask,tags))
  87.                                     waitmask=tag->ti_Data;
  88.                                 if(tag=FindTagItem(CONWAITTAG_WaitMaskRet,tags))
  89.                                     waitmaskret=(ULONG *) tag->ti_Data;
  90.                             }
  91.                         ret=SendCommandMessage("WWBBS Console",id,cmd,tags,waitmask,waitmaskret,CONCMD_Abort,FALSE);
  92.                     }
  93.                     break;
  94.             }
  95.         return(ret);
  96.     }
  97.  
  98. ULONG ConsoleCommandTags(BYTE *id,UBYTE cmd,Tag tag,...)
  99.     {
  100.         return(ConsoleCommand(id,cmd,(struct TagItem *) &tag));
  101.     }
  102.  
  103. __asm
  104. ULONG SerialCommand(register __a0 BYTE *id,register __d0 UBYTE cmd,register __a1 struct TagItem *tags)
  105.     {
  106.         ULONG ret=NULL;
  107.         switch(cmd)
  108.             {
  109.                 case SERCMD_Quit:
  110.                 case SERCMD_Open:
  111.                 case SERCMD_Close:
  112.                 case SERCMD_Read:
  113.                 case SERCMD_Write:
  114.                 case SERCMD_Abort:
  115.                 case SERCMD_SetBaud:
  116.                 case SERCMD_Carrier:
  117.                 case SERCMD_Query:
  118.                     ret=DoCommandMessage("WWBBS Serial",id,cmd,tags);
  119.                     break;
  120.                 case SERCMD_Wait:
  121.                     {
  122.                         ULONG waitmask=NULL,*waitmaskret=NULL;
  123.                         if(tags)
  124.                             {
  125.                                 struct TagItem *tag;
  126.                                 if(tag=FindTagItem(SERWAITTAG_WaitMask,tags))
  127.                                     waitmask=tag->ti_Data;
  128.                                 if(tag=FindTagItem(SERWAITTAG_WaitMaskRet,tags))
  129.                                     waitmaskret=(ULONG *) tag->ti_Data;
  130.                             }
  131.                         ret=SendCommandMessage("WWBBS Serial",id,cmd,tags,waitmask,waitmaskret,SERCMD_Abort,FALSE);
  132.                     }
  133.                     break;
  134.             }
  135.         return(ret);
  136.     }
  137.  
  138. ULONG SerialCommandTags(BYTE *id,UBYTE cmd,Tag tag,...)
  139.     {
  140.         return(SerialCommand(id,cmd,(struct TagItem *) &tag));
  141.     }
  142.  
  143. __asm
  144. ULONG TimerCommand(register __a0 BYTE *id,register __d0 UBYTE cmd,register __a1 struct TagItem *tags)
  145.     {
  146.         ULONG ret=NULL;
  147.         switch(cmd)
  148.             {
  149.                 case TMRCMD_Quit:
  150.                 case TMRCMD_Start:
  151.                 case TMRCMD_Stop:
  152.                     ret=DoCommandMessage("WWBBS Timer",id,cmd,tags);
  153.                     break;
  154.             }
  155.         return(ret);
  156.     }
  157.  
  158. ULONG TimerCommandTags(BYTE *id,UBYTE cmd,Tag tag,...)
  159.     {
  160.         return(TimerCommand(id,cmd,(struct TagItem *) &tag));
  161.     }
  162.